package com.itheima.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.common.Constant.MessageConstant;
import com.itheima.common.entity.PageResult;
import com.itheima.common.entity.QueryPageBean;
import com.itheima.common.entity.Result;
import com.itheima.pojo.CheckGroup;

import com.itheima.pojo.CheckIteAndCheckGroupAndCheckItemIds;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckGroupService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author 司军强
 * @version 1.0.0
 * @date 2019/7/19 :9:37
 * @description
 **/

@RestController
@RequestMapping("/checkgroup")
public class CheckGroupController {

    /*参数类型是 map pojo 的需要添加 @RequestBody 注解
    RequestBody 将json的数据转换为实体类的对象
    参数类型是 基本的数据类型和数组 不需要添加@RequestParam 但是要页面的参数类型 保持一致
    参数类型是 list  需要添加 @RequestParam（“参数名”）
    *
    * */


    //tod  属性注入
    @Reference
    private CheckGroupService checkGroupService;


    //添加的方法
    @RequestMapping("/add")
    public Result add(@RequestBody CheckGroup checkGroup, @RequestParam("checkitemIds") List<Integer> checkitemIds) {
        try {
            checkGroupService.add(checkGroup, checkitemIds);
            return new Result(true, MessageConstant.ADD_CHECKGROUP_SUCCESS);
        } catch (Exception e) {
            e.printStackTrace();
            return new Result(false, MessageConstant.ADD_CHECKGROUP_FAIL);
        }

    }

    //数据回显到页面
    @RequestMapping("/findAll")
    public Result findAll() {
        try {
            List<CheckGroup> list = checkGroupService.findAll();
            return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS, list);

        } catch (Exception e) {
            e.printStackTrace();
            return new Result(true, MessageConstant.QUERY_CHECKITEM_FAIL);
        }


    }


    //分页查询
    @RequestMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean) {

        return checkGroupService.findPage(queryPageBean);
    }


    //编辑数据回显
    @RequestMapping("/findAllById")
    public Result findAllById(Integer id) {

        try {
            CheckIteAndCheckGroupAndCheckItemIds cak = checkGroupService.findAllById(id);
            return new Result(true, MessageConstant.EDIT_CHECKGROUP_SUCCESS, cak);

        } catch (Exception e) {
            e.printStackTrace();
            return new Result(false, "网络异常");
        }
    }

//修改检查组的信息

    /* 参数类型是 map pojo 的需要添加注解 @requestBody
     * */

    @RequestMapping("/setEdit")
    public Result setEdit(@RequestBody CheckGroup checkGroup) {
        try {
            checkGroupService.setEdit(checkGroup);
            return  new Result(true,MessageConstant.EDIT_CHECKITEM_SUCCESS);
            //try里面所有的异常 都要跑到catch里面捕获
        } catch (Exception e) {
            e.printStackTrace();
            return  new Result(true,MessageConstant.EDIT_CHECKITEM_SUCCESS);
        }

    }


}
